<%# # the license inside this if block pertains to this file
        # Copyright 2018 Google Inc.
        # Licensed under the Apache License, Version 2.0 (the "License");
        # you may not use this file except in compliance with the License.
        # You may obtain a copy of the License at
        #
        #     http://www.apache.org/licenses/LICENSE-2.0
        #
        # Unless required by applicable law or agreed to in writing, software
        # distributed under the License is distributed on an "AS IS" BASIS,
        # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
        # See the License for the specific language governing permissions and
        # limitations under the License.
#%>
func expand<%= prefix -%><%= titlelize_property(property) -%>(v interface{}, d TerraformResourceData, config *Config) (interface{}, error) {
        project, err := getProject(d, config)
        if err != nil {
                return "", err
        }

        zone, err := getZone(d, config)
        if err != nil {
                return nil, err
        }

        if zone == "" {
                return nil, fmt.Errorf("zone must be non-empty - set in resource or at provider-level")
        }

	topic := d.Get("topic").(string)

	re := regexp.MustCompile(`projects\/(.*)\/locations\/(.*)\/topics\/(.*)`)
	match := re.FindStringSubmatch(topic)
	if len(match) == 4 {
		return topic, nil
        } else {
		// If no full topic given, we expand it to a full topic on the same project
		fullTopic := fmt.Sprintf("projects/%s/locations/%s/topics/%s", project, zone, topic)
		if err := d.Set("topic", fullTopic); err != nil {
			return nil, fmt.Errorf("Error setting topic: %s", err)
		}
		return fullTopic, nil
	}
}
